この項では、Oracleデータベース管理者がシステム・アカウントを使用してOracleデータベースで実行する必要がある処理について説明します。内容は次のとおりです。
Oracle表にアクセスしてキャッシュ・グループを作成するには、Oracleユーザーおよびパスワードを指定する必要があります(「キャッシュされた表のDSN定義」を参照)。すべてのOracleユーザー・アカウントに、Cache Connect to Oracleを使用するCREATE SESSION権限が付与されている必要があります。Cache Connect to Oracleの一部の処理では、Oracleユーザーに追加の権限が必要です。
Cache Connect to Oracleの一部の処理には、追加のOracle権限を持つ個別のユーザーが必要です。これらの追加のキャッシュ管理ユーザー権限は特定のユーザーにのみ付与されるため、Cache Connect to Oracleを使用して、個別のキャッシュ管理ユーザー・アカウントを作成できます(キャッシュ管理ユーザーとしてキャッシュ・エージェントを起動する方法は、「キャッシュ・エージェントの起動および停止」を参照)。
表3.5に、Oracleユーザーおよびキャッシュ管理ユーザーの両方がCache Connect to Oracleの各処理を行うための最小限の権限を示します。キャッシュ管理ユーザーの権限には、データ・ストアにキャッシュされるすべてのOracle表が含まれている必要があります。一方、Oracleユーザーは、ユーザーが作成するキャッシュ・グループで指定される特定のOracle表に対する権限のみが必要です。詳細は、例3.7を参照してください。
キャッシュ・グループの処理
|
Cache Connect to Oracleユーザーに付与される最小限の権限
|
キャッシュ管理ユーザーに付与される最小限の権限
|
---|---|---|
すべての処理 | なし |
|
CREATE READONLY CACHE GROUP | ||
CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP | なし |
|
CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP | ||
CREATE USERMANAGED CACHE GROUP (後続の行に示す異なる処理を参照) | なし |
|
CREATE USERMANAGED CACHE GROUP (PROPAGATEを指定) | なし |
|
CREATE USERMANAGED CACHE GROUP (AUTOREFRESH INCREMENTALを指定) | ||
LOAD CACHE GROUP | ||
REFRESH CACHE GROUP | ||
FLUSH CACHE GROUP | ||
Real Application Clustersを使用した構成におけるすべての処理 | Oracle GV$SESSION動的パフォーマンス・ビューに対するSELECT |
2人のユーザーSamおよびJohnに権限を付与する必要があります。各ユーザーは、CREATE READONLY CACHE GROUP文を実行して、個別の読取り専用キャッシュ・グループを作成できます。SamはOracle表のTTUSER.TABLEAをキャッシュするキャッシュ・グループを作成し、Johnは別のキャッシュ・グループにOracleのTTUSER.TABLEBをキャッシュします。
SamおよびJohnにCREATE READONLY CACHE GROUPに対する十分なOracle権限を付与するには、Oracleユーザー・アカウントを2つ、拡張権限を持つキャッシュ管理ユーザーを1つ作成する必要があります。ここでは、キャッシュ管理ユーザーの名前はUser2です。
Oracleにアカウントを作成します。
SQL> CREATE USER Sam IDENTIFIED BY Samspwd DEFAULT TABLESPACE users;
SQL> CREATE USER John IDENTIFIED BY Johnspwd DEFAULT TABLESPACE users;
SQL> CREATE USER User2 IDENTIFIED BY User2pwd DEFAULT TABLESPACE users;
次に、各ユーザーに次の権限を割り当てます。
SQL> GRANT CREATE SESSION, SELECT ON TTUSER.TABLEA TO Sam;
SQL> GRANT CREATE SESSION, SELECT ON TTUSER.TABLEB TO John;
SQL> GRANT
> CREATE SESSION,
> SELECT ON TTUSER.TABLEA, TTUSER.TABLEB,
> UNLIMITED TABLESPACE,
> CREATE TABLE,
> CREATE ANY TRIGGER
> TO User2;
SQL>
キャッシュ管理ユーザー用に個別の表領域を作成することを強くお薦めします。この表領域は、キャッシュ管理ユーザーのデフォルトの表領域として使用されます。表領域には、各Oracle表の自動リフレッシュ・トリガー、各Oracle表の変更ログ表、およびTimesTenが各キャッシュ管理ユーザーに対して必要とするその他のオブジェクトが含まれます。詳細は、「READONLY、AUTOREFRESHおよびAWTキャッシュ・グループのOracleオブジェクトの管理」を参照してください。個別の表領域を指定しない場合、これらのオブジェクトはOracleのシステム表領域に配置されます。
Oracleでのキャッシュ管理ユーザー作成時に表領域を指定できます。また、OracleのALTER USER文を使用してユーザーを作成した後も表領域を指定できます。
例3.7に、キャッシュ管理ユーザーUser2を作成し、このユーザーに権限を付与する方法を示しました。User2に対してcacheuserという個別の表領域を指定するには、Oracleで次の文を入力します。
SQL> ALTER USER User2 IDENTIFIED BY User2pwd DEFAULT TABLESPACE cacheuser;
キャッシュされた各Oracle表の変更ログ表は、キャッシュ管理ユーザーの表領域に存在します。Oracle表の各更新では、1行(1つの変更ログ・レコード)がそのOracle表の変更ログ表に挿入されます。変更ログ・レコードのサイズ(バイト)は次のようになります。
size of change log record = size of primary key on Oracle table + 250
変更ログ表のレコード数は、Oracle表での更新率、およびTimesTenでの自動リフレッシュ時間隔によって異なります。すべてのキャッシュで自動リフレッシュされた変更ログ・レコードは、20秒ごとにTimesTenによって削除されます。
キャッシュ管理ユーザーの表領域が一杯になった場合、自動リフレッシュ・トリガーは既存の変更ログ・レコードを削除して、新しい変更ログ・レコード用の領域を確保します。これによって、一部のTimesTenデータ・ストアのいくつかの表に対して完全自動リフレッシュを行うことができます。ただし、パフォーマンスは低下します。
表領域が一杯になった場合は、次の状態を確認します。